package arrayList;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class Test {

    public static void main(String[] args) {
        MyArrayList<String> list = new MyArrayList<>();
        list.add("abc");
        list.add("abc");
        list.add("abc");
        list.add("abc");
        list.add(0,"三团");
        System.out.println(list);
    }

    public static void main4(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("ha");
    }

    public static void main3(String[] args) {
        List<String> list = new ArrayList<>();
        List<String> listAdd = new ArrayList<>();
        listAdd.add("hello");
        listAdd.add("world");
        listAdd.add("你好~");

        list.add("哈哈");// 尾插元素
        list.add(0,"你好"); // 0 下标插入 "你好 "
        list.addAll(listAdd);// 将集合 listAdd 中的元素尾插到该集合中

        String s = list.remove(0);// 删除 index 位置元素并返回
        boolean s2 = list.remove("hello");// 删除遇到的第一个 hello，没找到则返回 false

        list.set(0,"we");

        list.indexOf("we");//返回第一个 "we" 所在下标
        list.lastIndexOf("we");// 返回最后一个 "we" 的下标

        System.out.println(list);
        // 截取子串 -- 左闭右开区间
        List<String> sub = list.subList(1, 3);
        System.out.println(sub);
        list.set(2,"修改后的list");
        System.out.println(sub);
    }

    public static void main2(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("hello");
        list.add("bit");
        list.add("world");

//        // 遍历顺序表
//        for (int i = 0; i < list.size(); i++) {
//            System.out.print(list.get(i));
//        }
//        // for - each 遍历
//        for (String s : list) {
//            System.out.print(s);
//        }
//
//        // 迭代器打印
//        // 获取迭代器对象
//        Iterator<String> iterator = list.iterator();
//        while (iterator.hasNext()) {
//            // 获取下一个对象
//            String next =  iterator.next();
//            // 打印
//            System.out.print(next);
//        }
        // listIterator
        ListIterator<String> iterator2 = list.listIterator();
        while (iterator2.hasNext()) {
            String next =  iterator2.next();
            if (next.equals("hello")) {
                iterator2.add("三团");// 在 hello 的后面添加 三团
            }else{
                System.out.print(next + " ");
            }
        }
        System.out.println(list);// [hello, 三团, bit, world]

    }

    public static void main1(String[] args) {
        // 无参构造
        List<Integer> list1 = new ArrayList<>();
        // 给定初始容量
        List<Integer> list2 = new ArrayList<>(10);
        // 使用另外一个 ArrayList对其初始化
        List<Integer> list3 = new ArrayList<>(list2);

        list1.add(1);
        list1.add(2);
        list1.add(3);
        // 重写了 toString方法
        System.out.println(list1);// 输出 [1, 2, 3]
    }
}
